列出package 大小
du -sh /data/app/*
列出大小並且排序
su -c "du -k -d 1 /data/ | sort -nr"
android 用 adb 列出安裝程式,移除程式
你可以使用 ADB(Android Debug Bridge)來列出已安裝的應用程式,並移除指定的應用。以下是常用指令:
bash
adb shell pm list packages
adb shell pm list packages -sadb shell pm list packages -3adb shell pm list packages | grep keywordbash
adb shell pm uninstall <package_name>
adb shell pm uninstall com.facebook.katana
--user 0):adb shell pm uninstall --user 0 <package_name>
如果你不知道應用的 package name,可以:
adb shell pm list packages | grep appnameadb shell dumpsys package 查找詳細資訊。你可以使用 ADB 指令來查看 Android 裝置上某個應用程式(package)所佔用的空間。以下是幾種方法:
bash
adb shell dumpsys package <package_name>
bash
adb shell du -sh /data/data/<package_name>
adb shell du -sh /data/app/<package_name>*
adb shell du -sh /sdcard/Android/data/<package_name>
/data/data/:應用的資料目錄(設定、資料庫等)/data/app/:APK 安裝檔案/sdcard/Android/data/:外部儲存空間使用(如快取)
注意:部分路徑需要 root 權限才能存取。
bash
adb shell pm path <package_name>
adb shell ls -l <APK 路徑>
或使用:
bash
adb shell du -sh /data/app/*
這會列出所有安裝 APK 的大小。
你可以使用 ADB 安裝 APK 檔案到 Android 裝置,以下是完整步驟與指令:
bash
adb devices
bash
adb install <path_to_apk>
例如:
bash
adb install myapp.apk
bash
adb install -r myapp.apk
bash
adb install --user 0 myapp.apk
安裝成功會顯示:
Code
Success
失敗可能會顯示:
Code
INSTALL_FAILED_VERSION_DOWNGRADE
INSTALL_FAILED_INVALID_APK
這些錯誤通常與簽章、版本號或裝置相容性有關。
需要我幫你寫一個自動化批次腳本來安裝多個 APK 嗎?或者你想在 CI/CD 中整合這個流程?
在 Android 上使用 ADB 安裝 APK 時,無法直接指定任意的儲存目錄。安裝位置是由 Android 系統根據裝置的儲存策略自動決定的。不過,你可以透過以下方式影響應用的安裝位置:
-s 參數安裝到 SD 卡(僅限支援的應用)bash
adb install -s myapp.apk
-s 表示嘗試將應用安裝到「外部儲存」(通常是 SD 卡或模擬 SD 卡)。AndroidManifest.xml 中必須包含:<manifest ... android:installLocation="preferExternal" ... >
你可以暫時更改裝置的預設安裝位置:
bash
adb shell pm set-install-location 2
0 = 自動(預設)1 = 僅內部儲存2 = 僅外部儲存
⚠️ 警告:這可能導致某些應用無法正常運作,請小心使用。
查詢目前設定:
bash
adb shell pm get-install-location
pm install 搭配路徑(進階用法)如果你已經將 APK 推送到裝置上(例如 /sdcard/Download/myapp.apk),可以這樣安裝:
bash
adb shell pm install /sdcard/Download/myapp.apk
但這仍然無法指定安裝到任意資料夾,因為 Android 的應用安裝流程會自動將 APK 解壓並安裝到 /data/app/ 或 /mnt/asec/ 等系統管理的目錄中。
| 方法 | 是否可行 | 限制 |
|---|---|---|
adb install -s |
✅ 有條件可行 | APK 必須支援 preferExternal |
pm set-install-location |
✅ 可行但不建議長期使用 | 可能影響系統穩定性 |
| 指定任意資料夾安裝 | ❌ 不可行 | Android 安全模型不允許 |
你可以透過以下幾種方式使用 ADB 查詢 Android 裝置上應用程式的 package name(套件名稱):
bash
adb shell pm list packages
這會列出所有安裝的應用,例如:
Code
package:com.android.chrome
package:com.facebook.katana
package:com.whatsapp
你可以搭配 grep 過濾關鍵字:
bash
adb shell pm list packages | grep facebook
如果你知道應用的部分名稱,可以用這個指令找出詳細資訊:
bash
adb shell dumpsys package <package_name>
例如:
bash
adb shell dumpsys package com.facebook.katana
這會顯示該應用的詳細資訊,包括版本、安裝路徑、權限等。
aapt dump badging myapp.apk | grep package
⚠️
aapt是 Android SDK Build Tools 的一部分,需先安裝。
需要我幫你寫一個腳本來快速查詢並選擇 package 嗎?還是你想查某個特定 App 的 package?
你可以使用 ADB 搭配 du 指令來列出 Android 裝置中 /data/ 目錄下每個資料夾的大小。不過,這通常需要 root 權限,因為 /data/ 是系統保護目錄。
/data/ 下每個資料夾的大小bash
adb shell su -c "du -h -d 1 /data/"
su -c:以 root 權限執行(需裝置已 root)du -h:顯示人類可讀格式(KB、MB、GB)-d 1:只列出第一層資料夾大小(不遞迴)12M /data/app
4.0K /data/anr
1.2G /data/data
...
你可以列出 /sdcard/Android/data/(外部儲存)下的資料夾大小:
bash
adb shell du -h -d 1 /sdcard/Android/data/
這對於分析使用者資料(快取、下載等)很有幫助。
/data/data/ 下每個應用資料夾大小(需 root)bash
adb shell su -c "du -h -d 1 /data/data/"
這可以幫你找出哪些應用佔用最多空間。
需要我幫你寫一個批次腳本,自動列出並排序資料夾大小嗎?或者你想把結果導出成檔案?
並且依照大小排序
你可以使用以下 ADB 指令來列出 /data/ 下每個資料夾的大小,並依照大小排序。這需要 root 權限:
/data/ 下資料夾大小並排序(需 root)bash
adb shell su -c "du -k -d 1 /data/ | sort -nr"
du -k:以 KB 為單位顯示大小(更容易排序)-d 1:只列出第一層資料夾sort -nr:依照數字大小(KB)由大到小排序Code
1256780 /data/data
456000 /data/app
32000 /data/dalvik-cache
4000 /data/anr
...
這樣你就能快速找出哪些資料夾佔用最多空間。
/data/data/(應用資料)bash
adb shell su -c "du -k -d 1 /data/data/ | sort -nr"
這會列出每個應用的資料目錄大小,例如:
Code
204800 /data/data/com.whatsapp
102400 /data/data/com.facebook.katana
...
如果你想把結果導出成檔案、或自動分析 top N 應用,我可以幫你寫一個完整的 shell script。要不要來個 class-based 版本,順便加上 log 和錯誤處理?
在 Android 裝置上,ADB 可以幫你清除暫存檔案(temp files)或模擬的「資源回收桶」內容。雖然 Android 沒有真正的「資源回收桶」,但你可以清除以下幾類暫存與垃圾資料:
bash
adb shell su -c "pm trim-caches 99999999999"
99999999999 是最大允許空間,代表「盡可能清除」。bash
adb shell pm clear <package_name>
adb shell pm clear com.facebook.katana
Android 沒有真正的資源回收桶,但某些檔案管理器或相簿 App 會建立類似功能。你可以手動清除這些資料夾:
bash
adb shell rm -rf /sdcard/.Trash/
adb shell rm -rf /sdcard/DCIM/.thumbnails/
adb shell rm -rf /sdcard/Android/data/*/cache/
⚠️ 注意:這些指令會永久刪除檔案,請小心使用。
bash
adb shell rm -rf /sdcard/Download/*
adb shell rm -rf /sdcard/tmp/*
你也可以加上 find 指令刪除特定副檔名:
bash
adb shell find /sdcard/ -name "*.log" -delete